СИСТЕМИ НЕЛІНІЙНИХ РІВНЯНЬ. МЕТОД НЬЮТОНА ТА -АЛГОРИТМ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Комп’ютеризовані системи
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні методи дослідження систем керування

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра „КОМП’ЮТЕРИЗОВАНІ СИСТЕМИ, АВТОМАТИКА І УПРАВЛІННЯ” ЗВІТ до лабораторної роботи № 4 З КУРСУ “Комп’ютерні методи дослідження систем керування” на тему: „ СИСТЕМИ НЕЛІНІЙНИХ РІВНЯНЬ. МЕТОД НЬЮТОНА ТА -АЛГОРИТМ ” Варіант № 3 Мета роботи: ознайомитися з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона та екстраполяційним методом – -алгоритмом. Таблиця 1. Завдання до лабораторної роботи № п/п Завдання (метод та початкові наближення коренів) відносна похибка у відсотках %, для -алгоритму: ,   3 Метод Ньютона з кінцево-різницевою матрицею Якобі (оберт. матриці методом Гауса з вибор. гол. ел-тів по всій матриці)   Таблиця 2. Системи нелінійних рівнянь  №3  поч. наближення    Блок-схема розробленої програми: Список змінних, які використовуються в коді програми, та їх пояснення: A[n][n] – матриця розмірністю 2*2; x[n] = {1, 1}, x_old[n] = {1, 1}, J[n][n], ee,x_[2],f_[2],h=1e-6,INVERS[n][n], E[n][n], V[n][n], C[n][n], P[n], X[n], Y[n], f[n],inx[n], Scx, Sinvf; – змінні типу double; i, j – змінні типу int; Остаточна версія програми: #include <vcl.h> #pragma hdrstop #include<math.h> #define n 2 #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void Func(double*x,double*f) { f[0]=pow(x[0],2)-pow(x[1],2)-0.1-x[0]; f[1]=2.0*x[1]*x[0]+0.1-x[1]; } void __fastcall TForm1::Button1Click(TObject *Sender) { bool cond_N; double x[n] = {1, 1}, x_old[n] = {1, 1}, J[n][n], ee,x_[2],f_[2],h=1e-6; double INVERS[n][n], E[n][n], V[n][n], C[n][n], P[n], X[n], Y[n], f[n], inx[n]; ee=0.00001; for (int i=0;i<n;i++) for (int j=0;j<n;j++) //Ініціалізація одиничної матриці: { if(i==j) E[i][j]=1; else E[i][j]=0; } do { cond_N=false; Func(x,f); for (int i=0;i<n;i++) for (int j=0;j<n;j++) { for (int k=0;k<n;k++) x_[k]=x[k]; x_[j]=x[j]+h; Func(x_,f_); J[i][j]=(f_[i]-f[i])/h; } double A[n][n], B[n]; for (int b=0;b<n;b++) { for (int i=0;i<n;i++) inx[i]=i; for (int i=0;i<n;i++) // Метод Гауса Прямий хід: for (int j=0;j<n;j++) { V[i][j]=J[i][j]; P[i]=E[i][b]; } for (int k=0;k<n;k++) //матричне сортування { Y[k]=P[k]/V[k][k]; for (int i=k+1;i<n;i++) { P[i]=P[i]-V[i][k]*Y[k]; for (int j=k+1;j<n;j++) { C[k][j]=V[k][j]/V[k][k]; V[i][j]=V[i][j]-V[i][k]*C[k][j]; } } } X[n-1]=Y[n-1]; for (int i=n-2;i>=0;i--) { // обернений хід double Scx=0; for (int j=i+1;j<n;j++) { Scx=Scx+C[i][j]*X[j]; } X[i]=Y[i]-Scx; } for (int i=0;i<n;i++) INVERS[i][b]=X[i]; } double Sinvf; for (int i=0;i<n;i++) { Sinvf=0; for (int j=0;j<n;j++) Sinvf=Sinvf+INVERS[i][j]*f[j]; x[i]=x_old[i]-Sinvf; } for (int i=0;i<n;i++) { cond_N = cond_N || fabs((x[i]-x_old[i])/x[i])*100>ee; x_old[i]=x[i]; } } while(cond_N); Memo1->Lines->Add("Pозвязок системи рівнянь"); for(int i=0; i<n; i++) Memo1->Lines->Add(x[i]); Memo1->Lines->Add("Перевірка"); f[0]=pow(x[0],2)-pow(x[1],2)-0.1-x[0]; f[1]=2.0*x[1]*x[0]+0.1-x[1]; Memo1->...
Антиботан аватар за замовчуванням

28.01.2013 18:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини